home *** CD-ROM | disk | FTP | other *** search
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!pad-thai.aktis.com!pad-thai.aktis.com!not-for-mail
- From: Daryl_Spitzer@mindlink.bc.ca (Daryl Spitzer)
- Newsgroups: comp.sys.mac.programmer,news.answers
- Subject: Comp.Sys.Mac.Programmer FAQ Part 1/2 (1/12/93)
- Supersedes: <macintosh/programmer-faq/part1_746164809@GZA.COM>
- Followup-To: poster
- Date: 31 Aug 1993 00:00:13 -0400
- Organization: none
- Lines: 1297
- Sender: faqserv@GZA.COM
- Approved: news-answers-request@MIT.Edu
- Distribution: world
- Expires: 21 Sep 1993 04:00:09 GMT
- Message-ID: <macintosh/programmer-faq/part1_746769609@GZA.COM>
- Reply-To: Daryl_Spitzer@mindlink.bc.ca
- NNTP-Posting-Host: pad-thai.aktis.com
- Summary: Frequently Asked Questions list for comp.sys.mac.programmer
- Keywords: frequently asked questions faq
- X-Last-Updated: 1993/01/20
- Xref: senator-bedfellow.mit.edu comp.sys.mac.programmer:68126 news.answers:11921
-
- Archive-name: macintosh/programmer-faq/part1
- Last-modified: 1993/01/12
-
-
- +---------------------------------+
- | Frequently Asked Questions List |
- | for Comp.Sys.Mac.Programmer |
- | January 12, 1993 |
- | PART ONE |
- +---------------------------------+
-
-
- This FAQ list is automatically posted once a week to comp.sys.mac.programmer.
- It is also available via anonymous ftp from ftp.cs.uoregon.edu [128.223.8.8]
- (user name 'anonymous', your internet address as password) in the files
- /pub/mac/csmp-faq-1 and /pub/mac/csmp-faq-2.
-
- This FAQ list is maintained by Daryl Spitzer. He can be reached at the
- following addresses:
-
- Internet: Daryl_Spitzer@mindlink.bc.ca
- SnailMail: 203 - 1385 West 12th Avenue
- Vancouver, BC (Canada)
- V6H 1M2
-
- The purpose of the FAQ list is to answer some of the most common questions
- asked on this group, and to refer people left with unanswered questions to
- available sources of additional help. You should read the FAQ list before
- posting to comp.sys.mac.programmer.
-
- Submissions, comments, etcetera, should be sent to Daryl Spitzer, as above.
- All such material sent will be considered to have entered the public domain
- (and will be subject to editing) unless specific text to the contrary
- accompanies the message (which may render the submission unusable).
-
-
-
- Changes since August 3, 1992
- ----------------------------
-
- - the keeper of the FAQ is now Daryl Spitzer (Daryl_Spitzer@mindlink.bc.ca)
-
- - 1.2 Debuggers:
- added Fritz Anderson's description of SourceBug
-
- - 2.1 The Associates and Partners Programs:
- new description, DEVHOTLINE is no longer a valid AppleLink address
-
- - 2.3 APDA
- new address and telephone numbers
-
- - 3.1.1 Technical Books
- new Inside Macintosh volumes
-
- - 3.1.3 Periodicals:
- MacTutor is now MacTech
-
-
-
-
- Table of Contents
- -----------------
-
- Part One (this file)
- ---------------------
-
- I. Development Software
- 1. Compilers
- 2. Debuggers
- 3. Other Tools
-
- II. Apple Developer Programs
- 1. The Associates and Partners Programs
- 2. Apple Developer University
- 3. APDA
- 4. Developer CDs
-
- III. Sources of Information
- 1. Books and Periodicals
- 1. Technical Books
- 2. Teaching Books
- 3. Periodicals
- 2. Mailing Lists
- 1. Comp.Sys.Mac.Programmer Digest
- 2. Think Class Library Discussion
- 3. MacPsych
- 3. Miscellaneous
- 1. Usenet Mac Programmer's Guide (UMPG)
- 2. Kent Sandvik's Frequently Asked MPW C++ and MacApp
- Questions
- 3. Comp.Sys.Mac.FAQ
-
- IV. Archive Sites
- 1. ftp.apple.com [130.43.2.3]
- 2. sumex-aim.stanford.edu [36.44.0.6]
- 3. rascal.ics.utexas.edu [128.83.138.20]
- 4. mac.archive.umich.edu [141.211.164.153]
- 5. ftp.cs.uoregon.edu [128.223.8.8]
- 6. ics.uci.edu [128.195.1.1]
- 7. ftp.brown.edu [128.148.176.55]
- 8. comp.binaries.mac [newsgroup]
-
- V. One-liners
- 1. The Main Loop and Events
- 2. Menus
- 3. Resources
- 4. Windows, Alerts, and Dialogs
- 5. Drawing
- 6. Files
- 7. Interrupts and VBL Tasks
- 8. Handles and Pointers
- 9. General
-
-
- Part Two (separate file)
- -------------------------
-
- VI. Specific Questions Answered
- 1. The Main Loop and Events
- 1. How do you tell if a specific key is being pressed?
- 2. How can I get millisecond timing from the keyboard
- (or mouse)?
- 2. Menus
- 1. When do you put an ellipsis on the end of a menu item?
- 2. How do I get the menubar to disappear and re-appear?
- 3. What's the difference between the resource ID of a 'MENU'
- resource and the menuID field of that resource?
- 3. Windows, Alerts, and Dialogs
- 1. How do you put a border around the default button in a
- dialog?
- 4. Drawing
- 1. What is the fastest way to paint one pixel on the screen?
- 2. How do you draw directly into a pixmap without using
- QuickDraw?
- 3. How do you draw directly onto the screen without using
- QuickDraw?
- 4. What RGB value does the system use for dimmed buttons,
- menus and window titles?
- 5. Files
- 1. Why is the File Manager so hard to use?
- 2. How do you get a full pathname?
- 3. How do you set the SFGet/PutFile directory?
- 4. How do you access the application's data fork?
- 6. Handles and Pointers
- 1. When should I call MoveHHi?
- 2. Why does malloc/calloc keep crashing or returning NULL in
- Think C?
- 7. Standalone Code
- 1. How do I write an INIT?
- 8. General
- 1. How do I register signatures and file types with Apple?
- 2. How do I go about writing serial port communications?
-
-
- VII. Eternal Debates:
- 1. Why doesn't the Mac do preemptive multitasking?
-
-
-
- =============================================================================
-
-
- ===================================
- Section I: Development Software
- ===================================
-
-
- This is by no means a complete analysis of the tools, development systems,
- etc. that are available. This is a short list of things which *most* Mac
- programmers use (or are at least aware of, and have considered using).
-
-
-
- 1.1 Compilers
- --------------
-
- Macintosh Programmer's Workshop (Apple)
- ---------------------------------------
-
- MPW is a package which contains separately-purchaseable compilers for
- Assembly, C, C++, and Object Pascal. All of these run in an environment
- called the MPW Shell. The Shell is a command-line oriented environment,
- designed for extreme configurability with scripts, user-writeable "tools",
- i/o redirection, and lots of other bells and whistles. On the pro side, it
- can do many things that THINK cannot do; it scales much better to large
- projects; it can be customized much more; and it's Apple's supported
- development environment. On the con side, it is comparatively expensive,
- slow, and difficult to learn. A debugger (SADE) is available for it, and
- is philosophically similar to MPW. An object library is available (MacApp)
- which allows applications to be built on an object-oriented framework, again
- similar to MPW in it's approach of being very powerful, but not necessarily
- easy to learn, easy to use, small, or fast.
-
- MPW is also available on the quarterly Essentials-Tools-Objects CD-ROM from
- Apple. This disc contains the latest version of the entire MPW development
- environment, as well as debugging utilities and a huge collection of sample
- source code. This brings the price of the MPW environment down a bit, but
- it's still much more expensive than THINK.
-
-
- Think (Symantec)
- ----------------
-
- Think is two separate products, Think C and Think Object Pascal. They are
- similar products. Both are integrated editor/compiler/linker/debugger
- environments. Both come with a large library of predefined classes (the C
- classes are written in a sort of pseudo C++ language that is Symantec's own
- Object C, not C++). Think Pascal is MacApp-compatable, as well. Both
- support inline assembly, but there is no separate assembler. Their main
- selling point, however, is that they are very fast and very simple. They are
- ideal for small projects that you want to finish in a few days, for
- beginners, and for people who need a full-fledged development environment but
- cannot afford MPW. This is not to say that the Think environments are not
- useful for commercial development; many successful commercial programs were
- written with Think. The difference in power between MPW and Think is only
- noticeable with very large and/or multiple-developer projects.
-
-
-
- 1.2 Debuggers (beyond SADE and the Think debuggers)
- ----------------------------------------------------
-
- MacsBug (Apple)
- ---------------
-
- MacsBug is an assembly-level debugger. It is a command-line driven, entirely
- text-based environment which uses little of the Mac toolbox, and is thus
- fairly stable in crashes (although it doesn't use protected memory, its main
- failing in the area of stability). It supports complex operations with
- breakpoints, A-line traps, macros, expressions, and more, and can be
- configured even more with user-writeable 'dcmd' external code resources.
- MacsBug is free via anonymous ftp from ftp.apple.com. It is also included
- with the book "Debugging Macintosh Software with MacsBug."
-
-
- TMON Professional (ICOM)
- ------------------------
-
- TMON Professional is an object-level debugger which is MUCH more powerful
- than MacsBug. It has an elaborate interface which looks nothing like a Mac
- application, and takes a while to get used to. It is a very intelligent
- program, however, which can often display memory in its most useful format
- without help (e.g. it will disassemble code, and display a string as a
- string, automatically). It has strong support for types, allowing you to
- easily view complex structures, arrays, floating point numbers, and more.
- You can examine the stack, the heaps, and just about anything else you could
- be interested in. It also provides versatile scripting, and is amazingly
- configurable. There are more goodies in this package than I can possible
- describe here. Drawbacks are high price, and a very steep learning curve.
-
-
- The Debugger (Jasik Designs)
- ----------------------------
-
- The Debugger (also known as Jasik's Debugger, because it was written by Steve
- Jasik) is the only source level debugger with all the low-level features of
- Macsbug (speed, straight-forward display of important info) and many of the
- advantages of source level debuggers (source code, quick display of local
- variables). Some of its best features are complete support for Object
- Pascal, speed, and the ability to look at resource map and file information.
- You gotta love any debugger that will display all of the low-level globals
- with their values in a single keystroke! It also has a On the down side,
- the interface is an aquired taste, the documentation needs work and
- distribution disks lack a certain polish. But, phone support is very good
- (you often get Steve himself).
-
-
- SourceBug (Apple)
- -----------------
-
- SourceBug is provided by Apple on its ETO development-tools CD. Like SADE,
- SourceBug is a source-level debugger. SADE is a scriptable,
- stream-in/stream-out environment like MPW: The code being debugged is
- displayed in text windows, with the current line highlighted. Data
- structures
- can be inspected, but only through printing commands; the formatting is
- automatic and type-sensitive. And, you can use scripts to walk linked or
- array data structures automatically, and save the results to text files.
-
- SourceBug, by contrast, is driven by mouse selections and menu commands. The
- program is centered around a browser window that organizes your code by
- source
- file (or by type, if you are using C++ or Object Pascal) and module name.
- You
- set breakpoints by clicking next to the line you want to break at. SADE
- requires a command to set breakpoints (though a menu item front-ends a script
- to set simple ones by selection); on the other hand, a SADE breakpoint can
- execute any script, permitting snapshots and conditional breaks. SourceBug
- gives you only an unconditional break.
-
- The same dichotomy applies to data structures: SourceBug is nearly as smart
- as SADE in parsing data, and provides you with an inspector for most
- instances
- of C++ or Pascal objects. But finding data, link traversals, and some
- formatting are strictly manual jobs. Variable-length arrays of complex
- types?
- Forget it. SADE can handle them, SourceBug can't.
-
- For most purposes, SourceBug is the better debugger. It is rare that you
- need
- SADE's strengths badly enough to compose the suite of breakpoints and testing
- scripts you will need to make SADE effective. SourceBug is better at 99% of
- the debugging tasks: For instance, when you break into SourceBug, the
- currently-executing procedure is displayed in a window, with an arrow
- pointing
- to the current line. In the upper part of the window is the stack crawl;
- click on any item in the list to see any procedure in the calling chain, see
- the line that made the call, and inspect (the optimizer permitting) the local
- variables of any procedure in the chain. To do the same in SADE requires
- issuing a command to dump the stack and selecting a code address identifier
- in
- the result. To examine a variable in use by a caller, you will have to use
- SADE's scoping language to provide it with enough context to identify the
- address. SADE can do more, but it can't carry enough context to be as
- helpful
- as SourceBug.
-
-
-
- 1.3 Other Tools
- ----------------
-
- ResEdit (Apple)
- ---------------
-
- ResEdit is the accepted tool for editing and creating resources. It has very
- little competition, partially because it is a very good and comprehensive
- program, and partially because it is free (available via anonymous ftp from
- ftp.apple.com). It allows you to edit any resource in hexadecimal, and most
- of the standard types have special editors that provide a direct-manipulation
- paradigm for editing them. Users may write their own pickers and editors for
- custom resource types, although this is rarely done in practice.
-
-
- Resorcerer (Mathemaesthetics)
- ------------------------------
-
- Resorcerer is a commercially available replacement for ResEdit. Many
- developers use it exclusively, and swear by it quite vehemently. This is
- from one of them:
-
- RESORCERER is a no-holds-barred resource dynamo.
- -- embarrasses the ResEdit dialog editor
- -- supports many more template data types
- -- swap in different resource templates based on a key value
- -- creates recursive resources
- -- generates starter code for a dialog
- -- does complex searches against resource contents or titles
- -- renumbers resources in batches
- -- changes resource types
- -- excellent support from the author himself
-
- I personally like Resorcerer for some things and ResEdit for others. There
- are certain resource types that cannot be edited with Resorcerer, like
- color icons, and others that cannot be edited with ResEdit, like help
- balloons. I expect, however, that with the addition of such resource
- editors to Resorcerer, I will begin to use it exclusively.
-
- The price is the major consideration for most people. ResEdit is free from
- Apple, while Resorcerer is a commercial product (available for around $250).
-
-
- Virtual User (Apple)
- --------------------
-
- Virtual User allows you to script user interactions with a program so that
- they cal be relayed over and over, and it can execute scripts remotely, over
- AppleTalk. So, for instance, you could write a script that puts your program
- through its paces, and then automatically execute that script simultaneously
- on lots of differently configured Macintosh systems. It is available from
- APDA (#M0987LL/B). [This paragraph taken from develop Issue 8, page 60.]
-
-
- Online Companion (Addison-Wesley)
- ---------------------------------
-
- Online Companion is a reference tool. Hit a magic key combination, and a
- pseudo-window opens at the bottom of the screen which allows you to type in
- a full or partial name and find it in Online's database. It contains Inside
- Mac and some supplements, Tech Notes, etc. It's fast and simple.
-
-
- Think Reference (Symantec)
- --------------------------
-
- Think Reference is a reference tool. It is a hypertext version of Inside Mac
- I-V and the Tech Notes. Click on the function or data type name to go to the
- page on which it is defined. It includes some very useful notes and examples
- written by Symantec, and the function prototypes can be copied and pasted
- into your editor. Very fast and simple to use. But beware of typos and, in
- some cases, bad advice.
-
-
-
-
-
- ========================================
- Section II: Apple Developer Programs
- ========================================
-
-
- 2.1 The Associates and Partners Programs
- -----------------------------------------
-
- From the Macintosh Development Tools and Languages Guidebook
- (1993 Edition, page 15):
-
- The Apple Associates Program is Apple's mainstream program for qualified
- commercial developers whose plans are well-aligned to Apple's long-term
- strategy. Members of this program receive essential technical and
- marketing information, as well as self-help technical support tools.
- Eligible Apple Associates can also purchase, at special prices, a limited
- number of Apple systems for development purposes.
-
- The Apple Partners Program is a development support program for
- Apple-selected commercial developers. Apple Partners haves access to
- programs and services such as techical and marketing information, as well
- as direct technical support via electronic mail. Apple Partners can also
- purchase, at special prices, a limited number of Apple computer systems
- for development purposes.
-
- Apple Associates and Apple Partners receive a monthly mailing containing
- all of the information in the Technical Information Mailing. [see section
- 2.4] Two other particularly interesting products that are included are
- the Developer CD, which contains hundreds of megabytes of
- programming-related material, and Apple Direct, a newspaper that keeps
- developers abreast of Apple's technical developments and marketing
- directions.
-
- Apple Associates and Apple Partners also get product-level support on
- development tools and system software, and information on how to use
- Apple's resources most efficiently. Additionally, code-level support
- from Developer Technical Support is available to Apple Partners via
- electronic mail.
-
- For more information on support programs for commercial developers
- contact the Developer Hotline at:
-
- Developer Support
- Apple Computer Inc.
- 20525 Mariani Avenue, M/S 75-2C
- Cupertino, CA 95014
- (408) 974-4897
-
- [no AppleLink address is given, but try DEVSUPPORT]
-
-
- 2.2 Apple Developer University
- -------------------------------
-
- From the back cover of 'develop' Issue 7:
-
- Apple Developer University provides training for all levels of Macintosh
- programmers. The hands-on classes give you experience using the most up-
- to-date development tools. Classes are offered in locations across the
- United States, and on-site instruction can also be arranged. Multimedia
- self-paced courses are available from Developer University through APDA.
- These courses include Macintosh Programming Fundamentals, User-Centered
- Design, and Introduction to Object-Oriented Programming.
-
- The registrar at (408) 974-6215 can reserve your place or send a current
- catalog. You can also AppleLink DEVUNIV (devuniv@applelink.apple.com) or
- write
-
- 20525 Mariani Avenue
- M/S 75-6U
- Cupertino, CA 95014
-
-
- 2.3 APDA
- ---------
-
- From the Macintosh Development Tools and Languages Guidebook
- (1993 Edition, page 13):
-
- APDA is an Apple service organization that offers convenient worldwide
- access to over 300 development tools, resources, training products, and
- information for anyone interested in developing applications on Apple
- platforms. Customers receive the quarterly APDA Tools Catalog featuring
- alll of the most popular and most current versions of Apple tools and the
- most popular third-party development tools. Ordering is easy, there are
- no membership fees and no special agreements are required for most products.
- APDA offers convenient payment and shipping options, including site
- licensing.
-
- To order product or receive a complimentary APDA Tools Catalog, contact:
-
- APDA
- Apple Computer Inc.
- P.O. Box 319
- Buffalo, New York 14207-0319 U.S.
-
- (800) 282-2732 U.S.
- (800) 637-0029 Canada
- (716) 871-6555 International
- (716) 871-6511 Fax
- APDA AppleLink (apda@applelink.apple.com)
- 76666,2405 CompuServe
- APDA America Online
-
-
- 2.4 Developer CDs
- ------------------
-
- The developer CDs are available quarterly from APDA, or monthly to Apple
- Associates and Partners. The quarterly version is also included in the
- quarterly issue of d e v e l o p. They contain just about everything that
- Apple makes freely available, including SpInside Mac, the Tech Notes, and
- a plethora of code snippets.
-
-
-
-
-
- =======================================
- Section III: Sources of Information
- =======================================
-
-
- 3.1 Books and Periodicals
- --------------------------
-
- 3.1.1 Technical Books
- ----------------------
-
-
- Inside Macintosh Volume I
- Addison-Wesley. ISBN 0-201-17731-5. $24.95
- Inside Macintosh Volume II
- Addison-Wesley. ISBN 0-201-17732-3. $24.95
- Inside Macintosh Volume III
- Addison-Wesley. ISBN 0-201-17733-1. $19.95
- Inside Macintosh Volume IV
- Addison-Wesley. ISBN 0-201-05409-4. $24.95
- Inside Macintosh Volume V
- Addison-Wesley. ISBN 0-201-17719-6. $26.95
- Inside Macintosh Volume VI
- Addison-Wesley. ISBN 0-201-57755-0. $39.95
-
- Inside Mac is the definitive reference regarding the Macintosh toolbox.
- Volumes I and II are basically essential to any Mac programmer who uses
- the toolbox at all. Volume III is essentially a summary, cross
- reference, index-y sort of thing, and isn't very useful. Volume IV is
- stuff specific to the Mac Plus and later machines, which would make it
- almost as important as I and II (not many 512K Macs left out there),
- except that the routines it describes are not nearly as generally
- useful. It does have all of the stuff on the HFS File Manager, however,
- so if you're working with File Manager routines you should definitely
- consult IV before I-III. Otherwise, you can survive without it for a
- while. Volume V is the Mac II volume. It has every thing on Color
- QuickDraw, as well as lots of other goodies. I'd say it's more useful
- than IV, but only if you're doing color. Volume VI is the System 7
- volume. It contains all kinds of bizarre new things which are probably
- not of general use or interest; but it contains a lot of new
- non-System-7 stuff as well (such as 32-bit Quickdraw), and it has
- corrections to the other five volumes.
-
-
- Inside Macintosh X-Ref, Revised Edition
- Addison Wesley. ISBN 0-201-57769-0. $12.95.
-
- Inside Mac X-Ref is a cross-referenced index to the six volumes and
- some other Macintosh technical books.
-
-
- Inside Macintosh: Files ISBN 0-201-63244-6 $29.95
- Inside Macintosh: Memory ISBN 0-201-63240-3 $24.95
- Inside Macintosh: Processes ISBN 0-201-63241-1 $22.95
-
- Inside Macintosh, having previously been three authoritative
- volumes, with three chronological supplements, has been due for
- a rewrite and overhaul for a few years. Apple is now in the
- process of reissuing IM in 15 subject-related books, of which
- only the first three have come out at this writing.
-
- If you have volumes I-VI, then you will eventually have to buy
- the new Inside Macintosh, too. Newcomers are in a dilemma:
- The new IM has better information than the old one, but not
- enough of the new IM has come out to be useful. They will have
- to judge how urgent their need is for authoritative
- information. Dabblers and beginners can probably get by with
- the teaching books recommended below. Serious work begins with
- Volume I (basic ToolBox), Volume II (basic OS), and Volume IV
- (for the file system). If you need color, get Volume V; if you
- do anything with processes (IPC, backgrounding), get Volume VI.
-
-
- M68000 User's Manual
- Prentice Hall. ISBN 0-13-609249-7. $22.95.
- MC68020 User's Manual
- Prentice Hall. ISBN 0-13-567017-9. $22.95.
- MC68030 User's Manual
- Prentice Hall. ISBN 0-13-566423-3. $22.95.
- MC68881/MC68882 Floating-Point Coprocessor User's Manual
- Prentice Hall. ISBN 0-13-566936-7. $22.95.
-
- The Motorola references are required reading for anyone doing assembly
- programming on the Mac. The 68000 is by far the most important. The
- 68881 manual only has relevance to those who want to do floating point
- and don't want to use SANE (the Standard Apple Numeric Environment,
- slow but robust, precise and general).
-
-
- Technical Introduction to the Macintosh Family
- Addison-Wesley. ISBN 0-201-17765-X. $19.95.
-
- This book provides an overview of the general hardware design, system
- archiecture, and ROM design of the Macintosh. It is not required for
- programming, but does provide some useful background information for
- programmers new to the Mac.
-
-
- Programmer's Introduction to the Macintosh Family.
- Addison-Wesley. ISBN 0-201-19254-3. $22.95.
-
- This book provides an overview of basic Macintosh programming concepts.
- It is recommended for programmers new to the Mac.
-
-
- Guide to the Macintosh Family Hardware
- Addison-Wesley. ISBN 0-201-52405-8. $26.95.
-
- This is the definitive guide to the hardware design of the Macintosh
- family.
-
-
- Designing Cards and Drivers for the Macintosh Family
- Addison-Wesley. ISBN 0-201-52404-X. $26.95.
-
- This is the official guide for developers of expansion cards and
- peripheral devices for the Mac. This book is required reading for
- anyone who wants to talk directly to expansion cards (video cards,
- for example).
-
-
- Human Interface Guidelines: The Apple Desktop Interface
- Addison-Wesley. ISBN 0-201-17753-6. $14.95.
-
- This is the definitive guide to program interface design on the
- Macintosh. When you find yourself wondering where to put the OK
- button in a dialog, consult this book.
-
-
- Apple Numerics Manual
- Addison-Wesley. ISBN 0-201-17738-2. $29.95.
-
- This book describes the Standard Apple Numerics Environment (SANE),
- and provides information about the IEEE-standard arithmetic and
- about the SANE engines on the Apple IIgs and Macintosh computers.
-
-
- Inside the Macintosh Communications Toolbox
- Addison-Wesley. ISBN 0-201-57775-5. $24.95.
-
- This is the definitive reference volume for the Communications Toolbox.
-
-
-
- 3.1.2 Teaching Books
- ---------------------
-
-
- Macintosh Programming Primer (Second Edition)
- Addison-Wesley. ISBN 0-201-60838-3. $26.95.
- Macintosh C Programming Primer Volume II
- Addison-Wesley. ISBN 0-201-57016-5. $24.95.
-
- These are excellent books for the beginning Mac programmer. Both books
- use Think C in their examples, but developers using other platforms
- will find a plethora of useful tidbits. I believe both books are
- available in Pascal as well.
-
-
- Macintosh Revealed, Volume One: Unlocking the Toolbox
- Hayden Books. ISBN 0-8104-6551-5. $26.95.
- Macintosh Revealed, Volume Two: Programming with the Toolbox
- Hayden Books. ISBN 0-8104-6561-2. $26.95.
- Macintosh Revealed, Volume Three: Mastering the Toolbox
- Hayden Books. ISBN 0-672-48402-1. $26.95.
- Macintosh Revealed, Volume Four: Expanding the Toolbox
- Hayden Books. ISBN 0-672-48413-7. $26.95.
-
- This encyclopedic collection covers the entire Mac Toolbox for the
- beginning Pascal or Assembly programmer. It sometimes re-iterates
- Inside Mac, but always offers a fresh perspective. Volume I covers
- basics including memory management and QuickDraw. Volume II covers the
- other essential Toolbox managers and exemplifies each by constructing
- part of a complete text editor. Volume III expands this application,
- covering printing, drivers, desk accessories, sound and definition
- functions. Volume IV contains details of programming with MultiFinder,
- Color QuickDraw and styled text.
-
-
- How to Write Macintosh Software (Third Edition)
- Hayden Books. ISBN 0-201-?????-?. ~$30.
-
- This book gives comprehensive coverage of memory management and
- debugging techniques. It also gives an excellent overview of assembly
- language programming on the Mac. A must-have. Somebody please send me
- the ISBN and price of the third edition (I haven't bought mine yet).
-
-
- Macintosh Programming Secrets (Second Edition)
- Addison-Wesley. ISBN 0-201-58134-5. $29.95.
-
- This is the second edition of Scott Knaster's classic book. This
- edition was co-authored by Keith Rollin. From the back cover: "If
- you've ever written Macintosh programs, or want to learn how it's done,
- this book will show you how to perform tasks that aren't explicitly
- documented in the reference books." This is true. Get this book if
- you want to learn how to write a tail patch, or how to hide the menu
- bar. If you don't know what a tail patch is, that's OK; this book
- starts at (or near) the beginning. A must-have for all beginning- and
- intermediate-level Macintosh programmers.
-
-
- On Macintosh Programming: Advanced Techniques
- Addison-Wesley. ISBN 0-201-51737-X. $24.95.
-
- This book contains a lot of information on all aspects of programming
- the Mac, including hardware and software architecture, the toolbox,
- and the use of assembly, C, and Pascal for programming the toolbox.
- It includes quite a lot of source code.
-
-
- Using the Macintosh Toolbox With C
- Sybex. ISBN 0-89588-572-7. $29.95.
-
- This is a fairly good book for beginning Mac programmers. Experienced
- programmers will find nothing new here.
-
-
- Programmer's Guide to MPW, Volume I
- Addison-Wesley. ISBN 0-201-57011-4. $26.95.
-
- This is a basic introduction to using MPW. I don't recommend it for
- anyone who already uses MPW.
-
-
- Programming with MacApp
- Addison-Wesley. ISBN 0-201-09784-2. $24.95.
- C++ Programming with MacApp
- Addison-Wesley. ISBN 0-201-57020-3. $24.95.
-
- These give a basic introduction to programming with MacApp; the first
- with Object Pascal, and the second with C++.
-
-
- Programming for System 7.
- Addison-Wesley. ISBN 0-201-56770-9. $26.95
-
- This is a guide to creating applications for System 7. It describes
- the new features and functions of the operating system in detail.
- The sample code is in C and includes a complete System 7 application
- in Chapter 1 which is expanded in succeeding chapters.
-
-
- ResEdit Complete
- Addison-Wesley. ISBN 0-201-55075-X. $29.95.
-
- Most of this book is not written for programmers, but includes quite
- a bit of useful information nonetheless. It contains detailed
- discussions of using, customizing and programming ResEdit, including
- the creation of custom templates, pickers and editors. It comes with
- ResEdit 2.1 on disk, with sample source code in MPW C and Pascal.
-
-
- Debugging Macintosh Software with MacsBug
- Addison-Wesley. ISBN 0-201-57049-1. $34.95.
-
- This looks like a really good and useful book, but I haven't had a
- chance to look at it yet. MacsBug is included on disk, along with
- several examples and dcmds.
-
-
- Programming the M68000
- Benjamin/Cummings. ISBN 0-8053-5550-2.
- 680x0 Programming by Example
- Howard W. Sams & Co. ISBN 0-672-22544-1. $17.95.
- M68000 Assembly Language: Techniques for Building Programs
- Addison-Wesley. ISBN 0-201-11659-6.
- The Complete Book of Macintosh Assembly Language Programming [sic]
- Scott, Foresman & Co.
- Vol I ISBN 0-673-18379-3
- Vol II ISBN 0-673-18583-4
-
- These are all assembly books that have been recommended by people on
- the net. The first two are general; the others are specific to the
- Macintosh.
-
-
-
- 3.1.3 Periodicals
- ------------------
-
-
- d e v e l o p
- Quarterly. $10 per issue. $30 per year.
- develop
- Apple Computer, Inc.
- P.O. Box 531
- Mt. Morris, IL 61054
- AppleLink DEV.SUBS
-
- develop is Apple's technical journal for the Macintosh and Apple II
- (the focus is on the Mac). The articles are well-written and useful,
- and it includes the Developer CD.
-
-
- MacTech (was MacTutor)
- Monthly. $5 per issue. $40 per year Third Class; $55 First Class.
- Xplain Corporation
- P.O. Box 250055
- Los Angeles, CA 90025-9555
- Phone: (310) 575-4343
- FAX: (310) 575-0925
- mactutor@applelink.apple.com
-
- The only Macintosh programming journal that I'm aware of. A good
- source of sample code.
-
-
-
-
- 3.2 Mailing Lists
- ------------------
-
- 3.2.1 Comp.Sys.Mac.Programmer Digest
- -------------------------------------
-
- The Comp.Sys.Mac.Programmer Digest is a collection of article threads from
- comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
- regularly and want an archive of the discussions.
-
- Each issue of the digest contains one or more sets of articles (called
- threads), with each set corresponding to a 'discussion' of a particular
- subject. The articles are not edited; all articles included in the digest
- are in their original posted form (as received by the news server at
- cs.uoregon.edu). Article threads are not added to the digest until the last
- article added to the thread is at least one month old (this is to ensure that
- the thread is dead before adding it to the digest). Article threads that
- consist of only one message are generally not included in the digest.
-
- The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
- [128.223.8.8] in the directory /pub/mac/csmp-digest. The most recent issues
- are available from sumex-aim.stanford.edu [36.44.0.6] in the directory
- /info-mac/digest/csmp. If you don't have ftp capability, the sumex archive
- has a mail server; send a message with the text '$MACarch help' (no quotes)
- to LISTSERV@ricevm1.rice.edu for more information.
-
- The digest is also available via email. Just send a note saying that you
- want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
- automatically receive each new issue as it is created. Sorry, back issues
- are not available through the mailing list.
-
-
-
-
- 3.2.2 Think Class Library Discussion
- -------------------------------------
-
- The Think Class Library discussion list is for those interested in using
- Symantec's Think C and Think Pascal object-oriented class library for
- Macintosh. Discussion topics include
-
- * class usage, design, and implementation
- * TCL bug reports, work-arounds, and fixes
- * TCL application development techniques
- * TCL development aids
-
- Mail to the discussion list should be sent to tcl-talk@brown.edu.
- If you want to join the discussion list, mail a note saying so to
- tcl-request@brown.edu.
-
-
-
-
- 3.2.3 MacPsych
- ---------------
-
- This is a mailing list of psychologists and others interested in using the
- Macintosh in research and teaching. The intention of this service is to
- provide quick and authoritative answers to questions raised by Mac-using
- researchers and teachers in psychology. Individuals who have Mac questions
- to pose, or have general messages that they believe would be of interest to
- research psychologists and teachers using the Macintosh, may send their
- information to macpsych@stolaf.edu. Mail sent to this address will first
- pass through the moderator for the list (huff@stolaf.edu) who will forward
- it to everyone on the list.
-
- If you want to be on the mailing list, mail a note saying so to
- macpsych-request@stolaf.edu.
-
- There is an archive containing some free Macintosh software that has been
- written by members of the group; for more information, write to
- macpsych-request@stolaf.edu.
-
-
-
-
- 3.3 Miscellaneous
- ------------------
-
- 3.3.1 Usenet Mac Programmer's Guide
- ------------------------------------
-
- The Usenet Mac Programmer's Guide (UMPG) is a collection of useful tips
- culled from comp.sys.mac.programmer. Compiled by Matthew X. Mora
- (mxmora@unix.sri.com), it is organized by topic and includes a table of
- contents and index. It is available via anonymous ftp from sumex-aim.
- stanford.edu (36.44.0.6) in the directory /info-mac/tech/.
-
- It is also available in a pre-printed version, or on disk.
-
- To get a copy of the printed version send $17.00 to:
-
- USENET Macintosh Programmer's Guide Printed Version
- 39075 Carmel Ct.
- Fremont, CA 94538
-
- To get a copy of the disk version send $5.00 to:
-
- USENET Macintosh Programmer's Guide Disk Version
- 39075 Carmel Ct.
- Fremont, CA 94538
-
-
-
-
- 3.3.2 Kent Sandvik's Frequently Asked MPW C++ and MacApp Questions
- -------------------------------------------------------------------
-
- This file is available upon request from ksand@apple.com or via anonymous ftp
- to ftp.cs.uoregon.edu [128.223.8.8] in the directory /pub/mac.
-
-
-
-
- 3.3.3 Comp.Sys.Mac.FAQ
- -----------------------
-
- This Frequently Asked Questions list provides short answers to a number of
- frequently asked questions from the newsgroups comp.sys.mac.system,
- comp.sys.mac.misc, and comp.sys.mac.apps. Some of the questions that it
- answers are asked occasionally on comp.sys.mac.programmer. Please read
- this FAQ list before posting to c.s.m.p. It is available from the sumex
- archives and its mirror sites (see section 4.2) in the file /info-mac/
- report/csmf-faq.txt.
-
-
-
-
-
- =============================
- Section IV: Archive Sites
- =============================
-
-
- 4.1 ftp.apple.com [130.43.2.3]
- -------------------------------
-
- Contents
- This archive contains just about everything available for free from
- Apple. Look here first for sample source code, the latest tech
- notes, and tools such as ResEdit and MacsBug. Very little of what
- can be found here is available from other archives.
-
- Access
- Anonymous ftp, from inside the United States only.
- You should read the file /dts/README.FIRST before downloading from this
- archive. Everything for the Mac is in /dts/mac. The moderators ask that
- you download during the off-peak hours if at all possible, since this is
- just a IIci running A/UX.
-
- Submissions
- You cannot post to this archive.
-
-
- 4.2 sumex-aim.stanford.edu [36.44.0.6]
- ---------------------------------------
-
- Contents
- This archive contains a large collection of public-domain and shareware
- for the Mac. It is well-maintained and updated regularly. New
- submissions to the archive are listed every other day or so in the
- newsgroup comp.sys.mac.digest.
-
- Access
- Anonymous ftp. Read the files in /info-mac/help for more detailed
- information about the files in the archive. Everything is in /info-mac.
- If you don't have ftp access you can use the mail server; send a message
- with the text '$MACarch help' (no quotes) to LISTSERV@ricevm1.rice.edu
- for more information.
-
- Submissions
- Sumex accepts all submissions that "are of general benefit to the
- Macintosh community." Basically, if you have something that you think is
- useful, and that other people may like to have, you should feel free to
- send it to sumex. All submissions should be compressed and BinHexed, and
- should include a short but informative blurb at the beginning of the file.
- Mail your submissions to info-mac@sumex-aim.stanford.edu. For more
- detailed information, consult the file
- /info-mac/help/posting-guidelines.txt.
-
-
- 4.3 rascal.ics.utexas.edu [128.83.138.20]
- ------------------------------------------
-
- This archive is being discontinued as of 5/92. It will continue to have
- stuff available for a while, perhaps a few months, but the contents will
- eventually dwindle until there is very little or nothing left.
-
- Contents
- This archive contains most of what can be found at sumex. Its
- emphasis is on utilities and programming-related items, but it
- contains quite a bit of other stuff as well. It is the home of
- the comp.sys.mac.announce archives. Many items tend to appear
- here before they show up at sumex or comp.binaries.mac.
-
- Access
- Anonymous ftp.
-
- Submissions
- No longer accepted.
-
-
- 4.4 mac.archive.umich.edu [141.211.164.153]
- --------------------------------------------
-
- Contents
- I haven't explored this archive yet, but I hear it has quite a bit
- of general Macintosh freeware and shareware.
-
- Access
- Anonymous ftp.
-
- Submissions
- You can submit to this archive by mailing a compressed, binhexed
- file with a brief descriptive header to macgifts@mac.archive.umich.
- edu. This address will also forward your mail to comp.binaries.mac
- and sumex-aim.stanford.edu.
-
-
- 4.5 ftp.cs.uoregon.edu [128.223.8.8]
- -------------------------------------
-
- Contents
- This is the home of this FAQ list, as well as the Comp.Sys.Mac.
- Programmer Digests. There's also a little sample code not included
- in the FAQ.
-
- Access
- Anonymous ftp. Directory /pub/mac.
-
- Submissions
- Not accepted.
-
-
- 4.6 ics.uci.edu [128.195.1.1]
- ------------------------------
-
- Contents
- This archive has some Mac stuff, although not nearly as much as the
- major sites, such as sumex. The main attraction is the Think C
- directory. It contains the latest updates to Think C, as well as
- Think C related system extensions, fkeys, etc., and source code.
- Definitely worth checking out if you use Think C extensively.
-
- Access
- Anonymous ftp. Directory /mac.
-
- Submissions
- Not accepted, I think. Someone please correct me if I'm wrong.
-
-
- 4.7 ftp.brown.edu [128.148.176.55]
- -----------------------------------
-
- Contents
- This is the home of the Think Class Library mailing list. It includes
- TCL bug fixes and new classes, as well as an archive of the tcl-talk
- mailing list.
-
- Access
- Anonymous ftp. Directory /pub/tcl.
-
- Submissions
- Submissions to the archive should be mailed to tcl-request@brown.edu or
- placed in the directory /incoming/tcl with accompanying mail to
- tcl-request. Encode all submissions in BinHex 4.0 format and include a
- descriptive header. Please do not redistribute Symantec's TCL source.
-
-
- 4.8 comp.binaries.mac [newsgroup]
- ----------------------------------
-
- Contents
- This is a moderated newsgroup for distribution of Macintosh freeware
- and shareware. Just about everything that gets sent to sumex and
- the other major archives gets sent here as well.
-
- Access
- Subscribe to the newsgroup....
-
- Submissions
- All files should be compressed and binhexed for mailing. Posting
- to the newsgroup should automatically get your file mailed to the
- moderator. If this does not happen on your system, you can mail
- your posting to the moderator yourself at macintosh@dhw68k.cts.com,
- or at dhw68k!bytebug@ics.uci.edu if the first address doesn't work.
- Expect a delay of as much as a month before your posting shows up
- on the newsgroup.
-
-
-
-
-
- =========================
- Section V: One-liners
- =========================
-
-
- 5.1 The Main Loop and Events
- -----------------------------
-
- Call MaxApplZone and MoreMasters when the application starts up.
- If you call SetApplLimit, do it before calling MaxApplZone.
- Use HD in MacsBug while running to estimate how many times to call
- MoreMasters.
- Don't use SetEventMask to disable mouseUp events. Better not to use it at
- all.
- Call WaitNextEvent if you're running under System 6 or later.
- DTS sample code passes 0x7fffffff to WaitNextEvent when nothing is happening.
- DTS sample code passes GetCaretTime() to WaitNextEvent when flashing a
- cursor.
- Call both GetNextEvent and SystemTask only if WaitNextEvent is unavailable.
- Call IsDialogEvents and DialogSelect even if GetNextEvent returns false.
- SetPort to a known good grafPort once every time through the event loop.
- Set the cursor on suspend and resume events.
- Call GetDblTime to get the maximum time for a double click.
- Measure double click time from mouse up to mouse down.
-
-
- 5.2 Menus
- ----------
-
- Use SetItem to include meta characters literally in menus.
- Prepend an ASCII 0 to a menu item to use a leading '-'.
- Never make MENU resources purgeable.
-
-
- 5.3 Resources
- --------------
-
- GetResource never produces resNotFound. Check for a NIL handle instead.
- To create a resource file, call HCreate, then HCreateResFile.
- To open a resource file read-only for shared access, use HOpenResFile.
- Don't leave ResLoad set to false.
- GetResource on a dctb may return a non-resource copy of the dctb.
-
-
- 5.4 Windows, Alerts, and Dialogs
- ---------------------------------
-
- Move and size windows to the bounding box of GetGrayRgn.
- Hide scroll bars when deactivating a window.
- Call DrawGrowIcon when activating or deactivating a window with a grow
- region.
- DrawGrowIcon does not check to see if the window has a grow region.
- Call PenNormal before calling DrawGrowIcon.
- itemHit will not be set when a dialog filter is called.
- Use a disabled UserItem to draw the roundrect outline around the OK button.
- ModalDialog assumes the dialog is already visible and in the front.
- Use screenBits.bounds to center dialogs, alerts, etc. below the menu bar.
- If you save window locations in files, they may not be valid for all
- monitors.
- DragWindow expects startPt in boundsRect; if not it may not call
- SelectWindow.
- SelectWindow does not automatically call SetPort. You must do that yourself.
- DialogSelect responds to activate events but ignores suspend/resume events.
-
-
- 5.5 Drawing
- ------------
-
- Always set the VisRgn and ClipRgn of offscreen ports.
- Set the ClipRgn first when making a picture.
- Don't make rowBytes in bitMaps greater than 8191.
- To dim text, draw a rectangle with penPat=gray and penMode=patbic over it.
- To draw rotated text, draw to an offscreen bitmap, rotate it, and CopyBits
- it.
- Don't use picSize to determine the size of a picture. Check the handle size.
- Never draw outside a window except in XOR mode for temporary effects like
- drag.
- To avoid animation flicker, synchronize drawing to the vertical retrace.
- CopyBits on more than 3Kb data will work, but it might have to allocate
- memory.
- The small Mac screen is 512 pixels wide by 342 pixels high including menu
- bar.
-
-
- 5.6 Files
- ----------
-
- Don't write in the application file. This will fail with read-only devices.
- Use PBGetVInfo to convert a VRefNum to a volume name.
- Delete uses the Poor Man's Search Path, so don't delete blindly.
- File Manager routines with dirID=0 use the Poor Man's Search Path.
- Truncate and reallocate files before overwriting to reduce fragmentation.
- Check/change the creator and type of Save As... files before overwriting.
- If you rewrite files by deleting and creating, copy all Finder information.
- Directory ID's are longs, not shorts. Shorts work ALMOST all the time.
- Always set the version number that appears in some file manager calls to 0.
- To convert a pathRefNum to a name or file number, use PBGetFCBInfo.
- Prevent the creation of files with names that begin with a period.
-
-
- 5.7 Interrupts and VBL Tasks
- -----------------------------
-
- Don't call any Memory Manager routines during an interrupt.
- Unlocked handles may not be valid during an interrupt.
- To synchronize to the vertical retrace on Macs with slots use SlotVInstall.
-
-
- 5.8 Handles and Pointers
- -------------------------
-
- Lock handles before passing their dereferenced pointers to any routine.
- Lock handles before setting referenced data to expressions containing
- functions
- Put an odd long at location zero on a 68000 to help find NIL handle
- references.
- Use HGetState/HLock/HSetState to lock a handle then put it back as it was.
-
-
- 5.9 General
-
- Always use unsigned characters within text and Pascal-format strings.
- Save application preferences in a folder named Preferences in the System
- Folder
- Use SysEnvirons to find the System (Blessed) Folder.
- Use GetAppParms to get the name of the application.
- The high bit of SysParam . volClik enables the alarm clock.
- Check the application name at $910 before exiting with ES within MacsBug.
- To exit to shell in the mini-debugger, enter SM 0 A9 F4 and then G 0.
- In Pascal, don't nest procedures to be passed by procedure pointer.
- In Pascal, "with theHandle^^" is unsafe if memory compaction can occur.
-
-
-
-
-
- ==============================
- Credits / Acknowledgements
- ==============================
-
-
- Many thanks to Ben Haller, who started this whole thing, and did quite a lot
- of work on this posting before handing it off to Michael A. Kelly. Many
- thanks to Michael A. Kelly also, for all his work in establishing and
- maintaining this FAQ (in addition to continuing to keep the
- Comp.Sys.Mac.Programmer Digest) before passing the baton.
-
- Thanks to these people for proofreading this list during its development:
- Ben Haller
- Wally Wedel
- John B. Matthews
- Patrick Beard
- Steve Zellers
-
- Thanks to Chris Webster for the one-liners.
-
- Thanks to Peter Lewis for the answers to the following specific questions:
- 6.2.1 When do you put an ellipsis on the end of a menu item?
- 6.5.1 Why is the File Manager so hard to use?
- 6.5.2 How do you get a full pathname?
- 6.5.3 How do you set the SFGet/PutFile directory?
-
- Thanks to Greg Ferrar for the review on TMON Pro.
-
- Thanks to John Rinaldo for the review on Jasik's Debugger.
-
- Thanks for Fritz Anderson for his descriptions of SourceBug and the new
- Inside Macintosh volumes.
-
- And thanks to everyone who has offered suggestions or constructive
- criticism.... Keep those comments coming!
-
-
-
-
- --
- -------------------------------------------------------------------
- Daryl_Spitzer@mindlink.bc.ca "Life isn't just, life just is."
- a2251@mindlink.bc.ca -- Me (I think.)
- -------------------------------------------------------------------
-